import { Arr, ItemObj } from './../types/arrayToTree.d';

/**
 * @description 数组转树形结构
 * @param {Array} arr 需要转换的一维数组
 * @return {Array} 转换后的树形结构
 */

const arrayToTree = function (arr: Arr): ItemObj[] {
	const tree: ItemObj[] = [];
	const otherObj: ItemObj = {};
	// 将数组中的每个元素按照其ID映射到一个对象中
	arr.forEach(item => {
		item.children = [];
		otherObj[item.id] = item;
	});
	// 遍历数组，将每个元素添加到其父节点的children属性中
	arr.forEach(item => {
		if (item.parentId) {
			otherObj[item.parentId].children.push(item);
		} else {
			tree.push(item);
		}
	});
	return tree;
};
export default arrayToTree;